package com.dcy.znoa.service.attendance;

import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.plugins.Page;
import com.dcy.znoa.common.exception.BusinessException;
import com.dcy.znoa.common.util.pojo.JsonCommon;
import com.dcy.znoa.common.util.pojo.JsonForList;
import com.dcy.znoa.controller.attendance.model.apply.*;
import com.dcy.znoa.controller.sys.model.role.SelectRoleModel;
import com.dcy.znoa.domain.attendance.Apply;
import com.dcy.znoa.domain.sys.Role;

import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.util.List;

public interface ApplyService {
    JsonForList selectList(SelectApplyModel model) throws InvocationTargetException, IllegalAccessException;

    Apply add(AddApplyModel model) throws InvocationTargetException, IllegalAccessException, BusinessException, ClientException;

    Integer revoke(RevokeApplyModel model) throws BusinessException, InvocationTargetException, IllegalAccessException;

    Integer audit(AuditApplyModel model) throws BusinessException, InvocationTargetException, IllegalAccessException, ParseException;

    List queryDetail(Long applyId);

    JsonForList queryReasonList(SelectApplyModel model);

    SelectApplyNum selectSendAndReceiveNumByOperId(SendApplyModel model);

    Apply selectById(Long applyId);
}
